/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
 * Description: 性能评估器相关头文件
 * Author: qingjicheng
 * Create: 2022-8-1
 */

#ifndef CONNECTED_SUBGRAPH_H
#define CONNECTED_SUBGRAPH_H

#include "hccl_evaluator_api.h"
#include "graph_common_def.h"
#include "hockney_model.h"

namespace HcclEvaluator {

class ConnectedSubgraph {
public:
    explicit ConnectedSubgraph(AdjacencyMatrix<> &&matrix);
    virtual ~ConnectedSubgraph() = default;
    virtual HcclResult CalcTimeCost(SubgraphCalcInfo &calcInfo, float &cost) = 0;
    virtual std::set<AlgType> GetSupportAlgType() = 0;
    inline u32 GetNodeSize()
    {
        return nodeSize_;
    }
protected:
    HcclResult GetHockneyModelParam(HockneyModelParam& param);
private:
    AdjacencyMatrix<> matrix_;
    u32 nodeSize_;
};
} // namespace HcclEvaluator
#endif